package com.aoxin.service.inter.opm;

import java.util.List;
import java.util.Map;

import com.aoxin.model.dto.MenuDto;
import com.aoxin.model.dto.TreeDto;
import com.aoxin.model.opm.SlfMenu;

/**
 * 菜单服务接口
 * 
 * @author Melody
 * @date 2018年3月21日 上午11:02:02
 */
public interface MenuService {

	/**
	 * 添加菜单
	 * 
	 * @param menu
	 *            菜单对象
	 */
	public void insertSlfMenu(SlfMenu menu);

	/**
	 * 删除菜单
	 * 
	 * @param menuId
	 *            菜单ID
	 */
	public void deleteSlfMenu(Integer menuId);

	/**
	 * 批量删除菜单
	 * 
	 * @param menuIds
	 *            菜单ID集合
	 */
	public void deleteSlfMenuByIds(List<Integer> menuIds);

	/**
	 * 修改菜单
	 * 
	 * @param menu
	 *            菜单
	 */
	public void updateSlfMenu(SlfMenu menu);

	/**
	 * 批量修改菜单状态
	 * 
	 * @param menuIds
	 *            菜单ID
	 * @param state
	 *            状态
	 */
	public void updateSlfMenuStates(List<Integer> menuIds, Integer state);

	/**
	 * 查询菜单
	 * 
	 * @param menuId
	 *            菜单ID
	 * @return 菜单
	 */
	public SlfMenu getSlfMenu(Integer menuId);

	/**
	 * 查询菜单
	 * 
	 * @param params
	 *            条件集合
	 * @return 菜单集合
	 */
	public List<SlfMenu> getSlfMenuList(Map<String, Object> params);

	/**
	 * 获取下一排序号
	 * 
	 * @param parentId
	 *            父ID
	 * @return 序号
	 */
	public Long getNextSequence(Integer parentId);

	/**
	 * 查询员工所有的菜单
	 * 
	 * @param employeeId
	 *            员工ID
	 * @return 菜单
	 */
	public List<MenuDto> getEmployeeMenuList(Integer employeeId);

	/**
	 * 查询菜单按钮
	 * 
	 * @param employeeId
	 *            员工ID
	 * @param parentId
	 *            父ID
	 * @return 菜单
	 */
	public Map<String, Boolean> getEmployeeMenuButtonList(Integer employeeId, Integer parentId);

	/**
	 * 查询菜单树
	 * 
	 * @return 菜单树
	 */
	public List<TreeDto> getMenuTreeList();

	/**
	 * 查询菜单选择树
	 * 
	 * @param roleId
	 *            角色ID
	 * 
	 * @return 菜单树
	 */
	public Map<String, Object> getMenuSelectTreeList(Integer roleId);
}
